DataWorks数据集成实时ETL支持JSON解析组件使用,可以在来源与去向组件间新增JSON解析组件,对来源侧的JSON数据解析成相应的表数据。
前提条件
已完成数据集成的基本配置与网络资源配置。
数据集成的同步类型为单表实时。
创建并配置JSON解析组件
步骤一:配置数据集成任务
新建数据源,详情请参见:创建并管理数据源。
新建数据集成任务,详情请参见:数据集成侧同步任务。
说明当数据集成侧同步任务的同步类型为单表实时,可在数据来源组件与数据去向组件之间新增数据处理组件。详情可参见支持的数据源及同步方案。
步骤二:添加JSON解析组件
在实时ETL任务编辑页DAG画布中,单击来源与去向组件之间的按钮,新增选择JSON解析组件。
配置JSON解析组件。
增加JSON解析固定字段
获取JSON格式化数据。
获取JSON方式
说明
图示
解析JSON固定字段。
单击增加JSON解析固定字段打开JSON解析固定字段弹窗,通过选择来源字段后,单击获取JSON数据结构后获取JSON数据结构。
手动上传字段JSON。
单击增加JSON解析固定字段打开JSON解析固定字段弹窗,由于无法顺利获取到上游字段取值,或获取到的字段取值不符合JSON规范,则需要单击JSON文本编辑按钮,在弹出的JSON文本编辑弹窗内手动输入JSON内容,单击确定来格式化上传的JSON内容。
手动新增字段,指的是当无法顺利获取上游字段取值时,也没有通过单击JSON文本编辑按钮手动上传字段JSON内容情况下手动定义固定字段解析规则,通过手动编辑取值内容的方式,来获取JSON内容,手动新增的详细参数如下:
参数
说明
字段名
解析得到的新字段在下游节点的引用名。
取值
用来指定JSON解析路径,解析语法如下:
$
:表示根节点。.
:表示子节点。[]
:[number]
表示数组下标,从0开始。[*]
:展开数组多行输出,每个元素与记录其他字段组装成独立一行记录往下游节点输出。
说明JSON解析路径中的JSON字段名只允许字母、数字、中划线“-”和下划线“_”。
默认值
当上游表字段发生变化导致JSON取值路径不存在时的默认值。
NULL:字段赋值为NULL。
不填充:字段不填充任何值,与选择NULL效果的区别在于写入目标表对应字段时,如果目标字段配置了默认值,则会使用这个默认值,而不是NULL。
脏数据:计入同步任务脏数据统计并根据脏数据容忍配置决定是否异常退出。
手动输入常量:使用手动输入常量作为字段赋值。
增加JSON解析动态字段
获取JSON格式化数据。
获取JSON方式
说明
图示
解析JSON动态输出字段
单击增加JSON解析动态字段打开JSON解析动态输出字段弹窗,通过选择来源字段后,单击获取JSON数据结构后获取JSON数据结构。
手动上传字段JSON
单击增加JSON解析动态字段打开JSON解析动态输出字段弹窗,由于无法顺利获取到上游字段取值,或获取到的字段取值不符合JSON规范,则需要单击JSON文本编辑按钮,在弹出的JSON文本编辑弹窗内手动输入JSON内容,单击确定来格式化上传的JSON内容。
动态解析JSON对象。
在格式化展示的JSON内容中选择要做动态解析的目标JSON对象字段,系统会自动在固定输出字段中添加JSON对象下每个字段的解析配置。
设置动态解析JSON对象,在同步任务实际运行中,会将每条指定路径下的JSON对象的每个字段,以原JSON字段名和字段值用STRING类型添加到记录中往下游节点输出,这样在同步运行过程中,当指定的JSON对象结构发生了变化或新增字段时,也能自动识别并向下游输出。
详情可参考下图:
解析对象变化前:
解析对象变化后:
解析效果展示。
_value_(STRING)
c1(STRING)
c2(STRING)
c3(STRING)
{ "dynamic": { "c1": 2, "c2": ["a1","b1"] } }
2
["a1","b1"]
未填充
{ "dynamic": { "c1": 2, "c2": ["a1","b1"], "c3": {"name": "jack"} } }
2
["a1","b1"]
{"name": "jack"}
手动新增字段。
手动新增字段,指的是当无法顺利获取上游子字段取值时,也没有通过单击JSON文本编辑按钮手动上传字段JSON内容情况下手动定义固定字段解析规则,通过手动编辑取值内容的方式自定义动态字段解析规则:
参数
描述
指定JSON对象
指定JSON对象解析路径,解析语法如下:
$
:表示根节点。.
:表示子节点。[]
:[number]表示数组下标,从0开始。
注:JSON解析路径中的JSON字段名只允许字母、数字、中划线"-"和下划线"_"。
默认值
指定当指定的JSON解析路径解析失败,或者对应字段不存在时的默认行为。
忽略
:不做动态解析。脏数据
:计入同步任务脏数据统计并根据脏数据容忍配置决定任务是否异常退出。
发现与已有字段重名时策略。
JSON动态字段按照key-value做展开时,只展开第一层,如果后展开的字段发现已有同名字段时需要采取的策略。策略详情如下:
覆盖:以后展开的value取代已有字段value。
丢弃:保持已有字段的value,丢弃后展开的value。
报错:任务报错,停止运行。
后续操作
完成来源信息、JSON解析以及去向信息的配置后,可单击右上角的模拟运行,对数据集成任务进行模拟运行,以便查看输出数据结果,是否符合您的需求。